草庐IT

c++ - SIMD C++ 库

全部标签

c - 检测退出时释放的 C 内存 'leaks'

假设我有一个C程序(在Linux下运行),它处理许多数据结构,有些很复杂,其中一些可以增长和收缩,但通常不应随时间增长。观察到该程序的RSS随着时间的推移逐渐增加(超过内存碎片可以解释的程度)。我想找到泄漏的东西。在valgrind下运行是这里明显的建议,但是valgrind(使用--leak-check=full和--show-reachables=yes)显示没有泄漏。我相信这是因为数据结构本身在退出时被正确地释放了,但其中一个在程序的生命周期中正在增长。例如,可能有一个随时间线性增长的链表,有人忘记删除列表中的资源,但退出清理在退出时正确地释放了列表中的所有项目。当然,如果它们被

c - 检测退出时释放的 C 内存 'leaks'

假设我有一个C程序(在Linux下运行),它处理许多数据结构,有些很复杂,其中一些可以增长和收缩,但通常不应随时间增长。观察到该程序的RSS随着时间的推移逐渐增加(超过内存碎片可以解释的程度)。我想找到泄漏的东西。在valgrind下运行是这里明显的建议,但是valgrind(使用--leak-check=full和--show-reachables=yes)显示没有泄漏。我相信这是因为数据结构本身在退出时被正确地释放了,但其中一个在程序的生命周期中正在增长。例如,可能有一个随时间线性增长的链表,有人忘记删除列表中的资源,但退出清理在退出时正确地释放了列表中的所有项目。当然,如果它们被

c - 执行free后进程的内存使用行为

我有一个正在执行内存使用分析的应用程序。我正在用一些数据加载应用程序,并且应用程序是这样的,它从这个抽取的数据中缓存(以一些哈希表和其他数据结构的形式存储,可以说是一些记录)信息。对于存储在内存中的每条记录,应用程序使用malloc/calloc分配内存。一段时间后,大约80%的记录超时,应用程序释放它为这些记录分配的内存。为了检查应用程序的内存使用情况,我在后台运行了一个脚本来捕获top和“free-m”的输出,并绘制了一个图表来查看系统的内存使用情况,如下所示。该图显示了在“-/+buffers/cache”行下“free-m”打印的值中看到的趋势,其中包含已使用和空闲的列。我期望

c - 执行free后进程的内存使用行为

我有一个正在执行内存使用分析的应用程序。我正在用一些数据加载应用程序,并且应用程序是这样的,它从这个抽取的数据中缓存(以一些哈希表和其他数据结构的形式存储,可以说是一些记录)信息。对于存储在内存中的每条记录,应用程序使用malloc/calloc分配内存。一段时间后,大约80%的记录超时,应用程序释放它为这些记录分配的内存。为了检查应用程序的内存使用情况,我在后台运行了一个脚本来捕获top和“free-m”的输出,并绘制了一个图表来查看系统的内存使用情况,如下所示。该图显示了在“-/+buffers/cache”行下“free-m”打印的值中看到的趋势,其中包含已使用和空闲的列。我期望

Android AOSP linux 服务标准输出

我正在为正在cooking的android镜像开发我自己的watchdoglinux服务(init.rc)。这些linux服务使用一些日志库,如log.h来显示此类服务的输出。我试图跟踪这些库,以便找到日志输出的转储位置。我在androidlogcat或/proc/kmsg或dmesg中都没有发现任何东西这是在init.rc中启动的linux服务的log.h库:#ifndef_INIT_LOG_H_#define_INIT_LOG_H_#include#defineERROR(x...)KLOG_ERROR("init",x)#defineNOTICE(x...)KLOG_NOTICE

Android AOSP linux 服务标准输出

我正在为正在cooking的android镜像开发我自己的watchdoglinux服务(init.rc)。这些linux服务使用一些日志库,如log.h来显示此类服务的输出。我试图跟踪这些库,以便找到日志输出的转储位置。我在androidlogcat或/proc/kmsg或dmesg中都没有发现任何东西这是在init.rc中启动的linux服务的log.h库:#ifndef_INIT_LOG_H_#define_INIT_LOG_H_#include#defineERROR(x...)KLOG_ERROR("init",x)#defineNOTICE(x...)KLOG_NOTICE

c - LD_PRELOAD不会影响RTLD_NOW的dlopen()

如果我直接使用共享库中的函数,即通过在代码中声明该函数并在编译时进行链接,则LD_PRELOAD可以正常工作。但是,如果我使用dlopen()/dlsym(),则LD_PRELOAD无效!问题是我想调试一个使用dlopen()加载某些插件的程序,并且该程序使用绝对文件名,因此仅使用LD_LIBRARY_PATH将无法工作。这是说明问题的示例代码。./libfoo.sovoidfoo(){printf("version1\n");}./preload/libfoo.sovoidfoo(){printf("version2\n");}main.c#include#includevoidfo

c - LD_PRELOAD不会影响RTLD_NOW的dlopen()

如果我直接使用共享库中的函数,即通过在代码中声明该函数并在编译时进行链接,则LD_PRELOAD可以正常工作。但是,如果我使用dlopen()/dlsym(),则LD_PRELOAD无效!问题是我想调试一个使用dlopen()加载某些插件的程序,并且该程序使用绝对文件名,因此仅使用LD_LIBRARY_PATH将无法工作。这是说明问题的示例代码。./libfoo.sovoidfoo(){printf("version1\n");}./preload/libfoo.sovoidfoo(){printf("version2\n");}main.c#include#includevoidfo

c - 如何在 Linux 或 Macos 中为 Windows 编译静态 .lib 库

我正在寻找在Linux或Macos中为Windows编译静态库的方法,似乎有交叉编译器可以为Windows生成.a库,如thisone,但这不是我想要的,我想要的是Windows的.lib静态库文件,最好是VisualStudio。我知道我可以运行Windows虚拟机并使用VisualStudio,但这太繁重了,无法在命令行中完成。 最佳答案 对于类unix操作系统(Linux、MacOS等),静态库意味着一个ararchive目标文件。ar是GNU通用的目的存档器。它不在乎您将哪种文件粘贴到存档中。它是当它们恰好是目标文件时,只是

c - 如何在 Linux 或 Macos 中为 Windows 编译静态 .lib 库

我正在寻找在Linux或Macos中为Windows编译静态库的方法,似乎有交叉编译器可以为Windows生成.a库,如thisone,但这不是我想要的,我想要的是Windows的.lib静态库文件,最好是VisualStudio。我知道我可以运行Windows虚拟机并使用VisualStudio,但这太繁重了,无法在命令行中完成。 最佳答案 对于类unix操作系统(Linux、MacOS等),静态库意味着一个ararchive目标文件。ar是GNU通用的目的存档器。它不在乎您将哪种文件粘贴到存档中。它是当它们恰好是目标文件时,只是